package ca.mcgill.model.digraph;

import ca.mcgill.model.functional.Transition;

public abstract class DigraphEdge {

	private double interArrivalTime;

	private Transition srcVertex;
	private Transition dstVertex;

	private boolean taken;

	public DigraphEdge(double interArrivalTime) {
		this.interArrivalTime = interArrivalTime;
	}

	public DigraphEdge(Transition srcVertex, Transition dstVertex) {
		this.srcVertex = srcVertex;
		this.dstVertex = dstVertex;
	}

	public DigraphEdge(double interArrivalTime, Transition srcVertex,
			Transition dstVertex) {
		this.interArrivalTime = interArrivalTime;
		this.srcVertex = srcVertex;
		this.dstVertex = dstVertex;
	}

	/*
	 * additional constructors with the extra information added for traversing
	 * through demand paths
	 */
	public DigraphEdge(double interArrivalTime, Transition srcVertex,
			Transition dstVertex, boolean taken) {
		this.interArrivalTime = interArrivalTime;
		this.srcVertex = srcVertex;
		this.dstVertex = dstVertex;
		this.taken = taken;
	}

	public double getInterArrivalTime() {
		return interArrivalTime;
	}

	public void setInterArrivalTime(double interArrivalTime) {
		this.interArrivalTime = interArrivalTime;
	}

	public Transition getSrcVertex() {
		return srcVertex;
	}

	public void setSrcVertex(Transition srcVertex) {
		this.srcVertex = srcVertex;
	}

	public Transition getDstVertex() {
		return dstVertex;
	}

	public void setDstVertex(Transition dstVertex) {
		this.dstVertex = dstVertex;
	}

	public void setTaken(boolean taken) {
		this.taken = taken;
	}

	public boolean setTaken() {
		return taken;
	}

}
